/**
 * 版权所有（c）2021. 上海海鼎信息工程股份有限公司，保留所有权利
 */
package com.lovely602.design.behavior.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * 抽象目标
 *
 * @author lizhixing
 */
public abstract class Subject {
  protected List<Observer> observers = new ArrayList<Observer>();

  /**
   * 增加观察者方法
   *
   * @param observer
   *     观察者
   */
  public void add(Observer observer) {
    observers.add(observer);
  }

  /**
   * 删除观察者方法
   *
   * @param observer
   *     观察者
   */
  public void remove(Observer observer) {
    observers.remove(observer);
  }

  /**
   * 通知观察者方法
   */
  public abstract void notifyObserver();

}
